{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "from sklearn import datasets\n",
    "from pandas import DataFrame\n",
    "import pandas as pd\n",
    "from matplotlib import pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1准备数据\n",
    "数据集读入  \n",
    "数据集乱序  \n",
    "生成训练集和测试集（即x_train/y_train,x_test/y_test）  \n",
    "配成（输入特征-标签）对，每次读入一笑撮（batch）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据集读入\n",
    "x_data = datasets.load_iris().data\n",
    "y_data = datasets.load_iris().target\n",
    "# 数据集乱序\n",
    "np.random.seed(116)\n",
    "np.random.shuffle(x_data)\n",
    "np.random.seed(116)\n",
    "np.random.shuffle(y_data)\n",
    "# 生成训练集和测试集（即x_train/y_train,x_test/y_test）\n",
    "x_train = x_data[:-30]\n",
    "y_train = y_data[:-30]\n",
    "x_test = x_data[-30:]\n",
    "y_test = y_data[-30:]\n",
    "# 数据类型转换\n",
    "x_train = tf.cast(x_train,tf.float32)\n",
    "x_test = tf.cast(x_test,tf.float32)\n",
    "# 配成（输入特征-标签）对，每次读入一笑撮（batch）\n",
    "train_db = tf.data.Dataset.from_tensor_slices((x_train,y_train)).batch(32)\n",
    "test_db = tf.data.Dataset.from_tensor_slices((x_test,y_test)).batch(32)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2搭建网络\n",
    "定义神经网络中所有可训练参数\n",
    "## 3参数优化\n",
    "嵌套循环迭代，with结构更新参数，显示当前loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "w1 = tf.Variable(tf.random.truncated_normal([4,3],stddev=0.1,seed=1))\n",
    "b1 = tf.Variable(tf.random.truncated_normal([3],stddev=0.1,seed=1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "lr = 0.1\n",
    "train_loss_results = []  \n",
    "test_acc = []\n",
    "epoch = 500\n",
    "loss_all = 9"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch0,loss:2.4496736638247967\n",
      "Test_acc: 0.16666666666666666\n",
      "############################################\n",
      "Epoch1,loss:0.18773281201720238\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch2,loss:0.17744352295994759\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch3,loss:0.16831428185105324\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch4,loss:0.1604229435324669\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch5,loss:0.15368586406111717\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch6,loss:0.14795001968741417\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch7,loss:0.1430513896048069\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch8,loss:0.13884079828858376\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch9,loss:0.13519200310111046\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch10,loss:0.13200175389647484\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch11,loss:0.12918698601424694\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch12,loss:0.1266812514513731\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch13,loss:0.124431436881423\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch14,loss:0.1223949734121561\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch15,loss:0.12053761631250381\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch16,loss:0.11883163452148438\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch17,loss:0.11725448071956635\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch18,loss:0.1157876867800951\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch19,loss:0.11441602557897568\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch20,loss:0.11312688700854778\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch21,loss:0.1119097676128149\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch22,loss:0.11075584217905998\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch23,loss:0.10965767502784729\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch24,loss:0.10860895365476608\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch25,loss:0.10760433040559292\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch26,loss:0.1066392082720995\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch27,loss:0.10570962727069855\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch28,loss:0.10481219738721848\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch29,loss:0.10394395515322685\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch30,loss:0.10310233011841774\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch31,loss:0.10228507220745087\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch32,loss:0.10149023123085499\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch33,loss:0.10071605257689953\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch34,loss:0.09996101632714272\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch35,loss:0.0992237851023674\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch36,loss:0.09850313514471054\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch37,loss:0.09779799915850163\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch38,loss:0.09710745140910149\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch39,loss:0.09643060341477394\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch40,loss:0.09576670080423355\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch41,loss:0.0951150394976139\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch42,loss:0.09447501786053181\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch43,loss:0.09384606033563614\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch44,loss:0.09322764724493027\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch45,loss:0.09261932782828808\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch46,loss:0.0920206643640995\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch47,loss:0.09143127873539925\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch48,loss:0.09085080772638321\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch49,loss:0.09027893096208572\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch50,loss:0.08971534483134747\n",
      "Test_acc: 0.5333333333333333\n",
      "############################################\n",
      "Epoch51,loss:0.08915977738797665\n",
      "Test_acc: 0.5666666666666667\n",
      "############################################\n",
      "Epoch52,loss:0.08861198090016842\n",
      "Test_acc: 0.5666666666666667\n",
      "############################################\n",
      "Epoch53,loss:0.08807170577347279\n",
      "Test_acc: 0.6\n",
      "############################################\n",
      "Epoch54,loss:0.08753873407840729\n",
      "Test_acc: 0.6\n",
      "############################################\n",
      "Epoch55,loss:0.0870128683745861\n",
      "Test_acc: 0.6\n",
      "############################################\n",
      "Epoch56,loss:0.08649391122162342\n",
      "Test_acc: 0.6\n",
      "############################################\n",
      "Epoch57,loss:0.0859816949814558\n",
      "Test_acc: 0.6\n",
      "############################################\n",
      "Epoch58,loss:0.08547604456543922\n",
      "Test_acc: 0.6\n",
      "############################################\n",
      "Epoch59,loss:0.0849767979234457\n",
      "Test_acc: 0.6\n",
      "############################################\n",
      "Epoch60,loss:0.08448382653295994\n",
      "Test_acc: 0.6\n",
      "############################################\n",
      "Epoch61,loss:0.08399697206914425\n",
      "Test_acc: 0.6\n",
      "############################################\n",
      "Epoch62,loss:0.08351612091064453\n",
      "Test_acc: 0.6\n",
      "############################################\n",
      "Epoch63,loss:0.0830411296337843\n",
      "Test_acc: 0.6\n",
      "############################################\n",
      "Epoch64,loss:0.08257190324366093\n",
      "Test_acc: 0.6333333333333333\n",
      "############################################\n",
      "Epoch65,loss:0.08210830762982368\n",
      "Test_acc: 0.6333333333333333\n",
      "############################################\n",
      "Epoch66,loss:0.081650260835886\n",
      "Test_acc: 0.6333333333333333\n",
      "############################################\n",
      "Epoch67,loss:0.08119763247668743\n",
      "Test_acc: 0.6333333333333333\n",
      "############################################\n",
      "Epoch68,loss:0.080750348046422\n",
      "Test_acc: 0.6333333333333333\n",
      "############################################\n",
      "Epoch69,loss:0.08030830509960651\n",
      "Test_acc: 0.6666666666666666\n",
      "############################################\n",
      "Epoch70,loss:0.07987141609191895\n",
      "Test_acc: 0.6666666666666666\n",
      "############################################\n",
      "Epoch71,loss:0.07943959534168243\n",
      "Test_acc: 0.6666666666666666\n",
      "############################################\n",
      "Epoch72,loss:0.07901275902986526\n",
      "Test_acc: 0.6666666666666666\n",
      "############################################\n",
      "Epoch73,loss:0.07859082892537117\n",
      "Test_acc: 0.7\n",
      "############################################\n",
      "Epoch74,loss:0.07817373052239418\n",
      "Test_acc: 0.7\n",
      "############################################\n",
      "Epoch75,loss:0.07776138372719288\n",
      "Test_acc: 0.7\n",
      "############################################\n",
      "Epoch76,loss:0.07735371217131615\n",
      "Test_acc: 0.7\n",
      "############################################\n",
      "Epoch77,loss:0.0769506637006998\n",
      "Test_acc: 0.7\n",
      "############################################\n",
      "Epoch78,loss:0.07655214704573154\n",
      "Test_acc: 0.7\n",
      "############################################\n",
      "Epoch79,loss:0.07615811564028263\n",
      "Test_acc: 0.7\n",
      "############################################\n",
      "Epoch80,loss:0.07576848939061165\n",
      "Test_acc: 0.7333333333333333\n",
      "############################################\n",
      "Epoch81,loss:0.07538321986794472\n",
      "Test_acc: 0.7333333333333333\n",
      "############################################\n",
      "Epoch82,loss:0.07500224187970161\n",
      "Test_acc: 0.7333333333333333\n",
      "############################################\n",
      "Epoch83,loss:0.07462548837065697\n",
      "Test_acc: 0.7333333333333333\n",
      "############################################\n",
      "Epoch84,loss:0.0742529071867466\n",
      "Test_acc: 0.7333333333333333\n",
      "############################################\n",
      "Epoch85,loss:0.07388443779200315\n",
      "Test_acc: 0.7333333333333333\n",
      "############################################\n",
      "Epoch86,loss:0.07352003268897533\n",
      "Test_acc: 0.7333333333333333\n",
      "############################################\n",
      "Epoch87,loss:0.07315961923450232\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test_acc: 0.7666666666666667\n",
      "############################################\n",
      "Epoch88,loss:0.07280316483229399\n",
      "Test_acc: 0.7666666666666667\n",
      "############################################\n",
      "Epoch89,loss:0.07245059870183468\n",
      "Test_acc: 0.7666666666666667\n",
      "############################################\n",
      "Epoch90,loss:0.07210187520831823\n",
      "Test_acc: 0.7666666666666667\n",
      "############################################\n",
      "Epoch91,loss:0.07175694685429335\n",
      "Test_acc: 0.7666666666666667\n",
      "############################################\n",
      "Epoch92,loss:0.07141576800495386\n",
      "Test_acc: 0.8\n",
      "############################################\n",
      "Epoch93,loss:0.07107828091830015\n",
      "Test_acc: 0.8\n",
      "############################################\n",
      "Epoch94,loss:0.07074443716555834\n",
      "Test_acc: 0.8\n",
      "############################################\n",
      "Epoch95,loss:0.07041418831795454\n",
      "Test_acc: 0.8333333333333334\n",
      "############################################\n",
      "Epoch96,loss:0.07008748967200518\n",
      "Test_acc: 0.8333333333333334\n",
      "############################################\n",
      "Epoch97,loss:0.06976429931819439\n",
      "Test_acc: 0.8333333333333334\n",
      "############################################\n",
      "Epoch98,loss:0.06944457162171602\n",
      "Test_acc: 0.8333333333333334\n",
      "############################################\n",
      "Epoch99,loss:0.0691282507032156\n",
      "Test_acc: 0.8333333333333334\n",
      "############################################\n",
      "Epoch100,loss:0.06881531048566103\n",
      "Test_acc: 0.8333333333333334\n",
      "############################################\n",
      "Epoch101,loss:0.06850569229573011\n",
      "Test_acc: 0.8333333333333334\n",
      "############################################\n",
      "Epoch102,loss:0.06819936260581017\n",
      "Test_acc: 0.8333333333333334\n",
      "############################################\n",
      "Epoch103,loss:0.06789627391844988\n",
      "Test_acc: 0.8333333333333334\n",
      "############################################\n",
      "Epoch104,loss:0.06759637221693993\n",
      "Test_acc: 0.8333333333333334\n",
      "############################################\n",
      "Epoch105,loss:0.06729963514953852\n",
      "Test_acc: 0.8333333333333334\n",
      "############################################\n",
      "Epoch106,loss:0.06700602453202009\n",
      "Test_acc: 0.8333333333333334\n",
      "############################################\n",
      "Epoch107,loss:0.0667154910042882\n",
      "Test_acc: 0.8333333333333334\n",
      "############################################\n",
      "Epoch108,loss:0.06642799638211727\n",
      "Test_acc: 0.8333333333333334\n",
      "############################################\n",
      "Epoch109,loss:0.06614350061863661\n",
      "Test_acc: 0.8666666666666667\n",
      "############################################\n",
      "Epoch110,loss:0.0658619636669755\n",
      "Test_acc: 0.9\n",
      "############################################\n",
      "Epoch111,loss:0.06558335665613413\n",
      "Test_acc: 0.9\n",
      "############################################\n",
      "Epoch112,loss:0.06530763674527407\n",
      "Test_acc: 0.9\n",
      "############################################\n",
      "Epoch113,loss:0.06503476295620203\n",
      "Test_acc: 0.9\n",
      "############################################\n",
      "Epoch114,loss:0.06476470828056335\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch115,loss:0.06449742894619703\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch116,loss:0.06423288304358721\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch117,loss:0.06397105287760496\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch118,loss:0.06371188256889582\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch119,loss:0.06345536280423403\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch120,loss:0.06320144794881344\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch121,loss:0.06295009795576334\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch122,loss:0.06270129047334194\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch123,loss:0.062454985454678535\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch124,loss:0.062211161479353905\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch125,loss:0.061969783157110214\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch126,loss:0.061730798333883286\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch127,loss:0.06149421073496342\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch128,loss:0.06125996075570583\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch129,loss:0.06102803722023964\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch130,loss:0.060798405669629574\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch131,loss:0.06057104282081127\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch132,loss:0.06034590769559145\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch133,loss:0.06012297607958317\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch134,loss:0.05990222189575434\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch135,loss:0.05968361720442772\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch136,loss:0.059467135928571224\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch137,loss:0.059252744540572166\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch138,loss:0.05904042534530163\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch139,loss:0.05883015785366297\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch140,loss:0.0586219010874629\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch141,loss:0.05841562803834677\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch142,loss:0.05821133032441139\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch143,loss:0.058008977212011814\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch144,loss:0.05780853517353535\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch145,loss:0.057609991170465946\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch146,loss:0.05741331074386835\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch147,loss:0.05721847712993622\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch148,loss:0.05702547449618578\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch149,loss:0.056834268383681774\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch150,loss:0.056644841097295284\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch151,loss:0.0564571637660265\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch152,loss:0.05627122521400452\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch153,loss:0.056086997501552105\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch154,loss:0.05590446200221777\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch155,loss:0.05572360288351774\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch156,loss:0.055544378235936165\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch157,loss:0.05536680109798908\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch158,loss:0.05519081745296717\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch159,loss:0.055016426369547844\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch160,loss:0.054843610152602196\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch161,loss:0.054672337137162685\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch162,loss:0.05450261011719704\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch163,loss:0.054334383457899094\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch164,loss:0.05416765809059143\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch165,loss:0.054002401418983936\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch166,loss:0.053838604129850864\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch167,loss:0.05367625132203102\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch168,loss:0.05351531505584717\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch169,loss:0.05335579067468643\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch170,loss:0.05319765768945217\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch171,loss:0.053040891885757446\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch172,loss:0.05288548115640879\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch173,loss:0.0527314068749547\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch174,loss:0.05257866531610489\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch175,loss:0.05242722947150469\n",
      "Test_acc: 0.9333333333333333\n",
      "############################################\n",
      "Epoch176,loss:0.05227707605808973\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch177,loss:0.052128205075860023\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch178,loss:0.051980601623654366\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch179,loss:0.05183424148708582\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch180,loss:0.051689110696315765\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch181,loss:0.051545191556215286\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch182,loss:0.05140248313546181\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch183,loss:0.05126096215099096\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch184,loss:0.05112061649560928\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch185,loss:0.050981430336833\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch186,loss:0.050843389704823494\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch187,loss:0.050706492736935616\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch188,loss:0.05057071056216955\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch189,loss:0.0504360431805253\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch190,loss:0.05030245892703533\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch191,loss:0.05016996245831251\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch192,loss:0.0500385407358408\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch193,loss:0.0499081676825881\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch194,loss:0.04977885074913502\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch195,loss:0.04965056665241718\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch196,loss:0.0495233004912734\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch197,loss:0.049397045746445656\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch198,loss:0.049271791242063046\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch199,loss:0.04914752207696438\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch200,loss:0.04902423731982708\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch201,loss:0.048901909962296486\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch202,loss:0.04878054093569517\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch203,loss:0.04866011533886194\n",
      "Test_acc: 0.9666666666666667\n",
      "############################################\n",
      "Epoch204,loss:0.04854062292724848\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch205,loss:0.04842205345630646\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch206,loss:0.04830439854413271\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch207,loss:0.048187644220888615\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch208,loss:0.048071784898638725\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch209,loss:0.04795681219547987\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch210,loss:0.04784271214157343\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch211,loss:0.047729468904435635\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch212,loss:0.04761708714067936\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch213,loss:0.04750554636120796\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch214,loss:0.04739484749734402\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch215,loss:0.04728496912866831\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch216,loss:0.04717591777443886\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch217,loss:0.047067666426301\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch218,loss:0.04696022253483534\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch219,loss:0.046853565610945225\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch220,loss:0.04674769099801779\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch221,loss:0.046642594039440155\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch222,loss:0.04653826728463173\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch223,loss:0.046434697695076466\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch224,loss:0.046331869438290596\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch225,loss:0.04622978996485472\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch226,loss:0.04612845554947853\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch227,loss:0.04602783638983965\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch228,loss:0.04592793993651867\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch229,loss:0.04582875221967697\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch230,loss:0.045730276964604855\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch231,loss:0.045632499270141125\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch232,loss:0.04553540516644716\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch233,loss:0.045438991859555244\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch234,loss:0.045343256555497646\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch235,loss:0.045248198322951794\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch236,loss:0.04515379201620817\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch237,loss:0.04506004974246025\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch238,loss:0.044966950081288815\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch239,loss:0.04487449210137129\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch240,loss:0.044782670214772224\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch241,loss:0.04469148628413677\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch242,loss:0.044600910507142544\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch243,loss:0.04451096896082163\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch244,loss:0.044421615079045296\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch245,loss:0.044332883320748806\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch246,loss:0.04424474760890007\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch247,loss:0.044157207012176514\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch248,loss:0.04407023638486862\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch249,loss:0.043983856216073036\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch250,loss:0.04389805719256401\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch251,loss:0.0438128262758255\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch252,loss:0.04372815415263176\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch253,loss:0.04364404082298279\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch254,loss:0.04356048256158829\n",
      "Test_acc: 1.0\n",
      "############################################\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch255,loss:0.043477470986545086\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch256,loss:0.04339500330388546\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch257,loss:0.04331306554377079\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch258,loss:0.043231663294136524\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch259,loss:0.043150792829692364\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch260,loss:0.043070437386631966\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch261,loss:0.04299060069024563\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch262,loss:0.042911275289952755\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch263,loss:0.04283245839178562\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch264,loss:0.042754145339131355\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch265,loss:0.04267632681876421\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch266,loss:0.04259899910539389\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch267,loss:0.04252215661108494\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch268,loss:0.04244580492377281\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch269,loss:0.04236992169171572\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch270,loss:0.04229451809078455\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch271,loss:0.04221958760172129\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch272,loss:0.04214513022452593\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch273,loss:0.04207111615687609\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch274,loss:0.041997573338449\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch275,loss:0.041924470104277134\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch276,loss:0.04185182601213455\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch277,loss:0.04177962150424719\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch278,loss:0.04170785937458277\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch279,loss:0.041636533103883266\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch280,loss:0.04156563896685839\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch281,loss:0.04149516858160496\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch282,loss:0.04142513405531645\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch283,loss:0.04135550558567047\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch284,loss:0.041286300867795944\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch285,loss:0.04121751710772514\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch286,loss:0.04114913567900658\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch287,loss:0.04108116030693054\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch288,loss:0.04101359099149704\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch289,loss:0.04094641376286745\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch290,loss:0.04087963420897722\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch291,loss:0.04081325512379408\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch292,loss:0.04074725043028593\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch293,loss:0.040681641548871994\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch294,loss:0.0406164126470685\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch295,loss:0.040551554411649704\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch296,loss:0.04048707615584135\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch297,loss:0.040422975085675716\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch298,loss:0.040359227918088436\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch299,loss:0.0402958607301116\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch300,loss:0.04023284977301955\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch301,loss:0.040170196909457445\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch302,loss:0.04010789981111884\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch303,loss:0.04004595801234245\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch304,loss:0.03998436173424125\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch305,loss:0.03992311796173453\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch306,loss:0.039862210396677256\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch307,loss:0.039801651146262884\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch308,loss:0.039741430431604385\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch309,loss:0.03968153987079859\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch310,loss:0.039621985517442226\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch311,loss:0.039562763180583715\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch312,loss:0.03950386308133602\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch313,loss:0.03944529080763459\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch314,loss:0.03938703378662467\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch315,loss:0.03932910319417715\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch316,loss:0.03927148459479213\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch317,loss:0.03921418031677604\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch318,loss:0.039157189428806305\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch319,loss:0.03910049935802817\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch320,loss:0.03904412453994155\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch321,loss:0.038988052401691675\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch322,loss:0.03893227316439152\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch323,loss:0.03887679800391197\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch324,loss:0.03882161667570472\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch325,loss:0.03876673337072134\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch326,loss:0.03871214063838124\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch327,loss:0.03865783382207155\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch328,loss:0.03860381664708257\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch329,loss:0.03855008305981755\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch330,loss:0.038496632128953934\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch331,loss:0.0384434605948627\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch332,loss:0.038390562403947115\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch333,loss:0.038337948732078075\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch334,loss:0.03828560234978795\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch335,loss:0.03823353024199605\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch336,loss:0.03818171797320247\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch337,loss:0.03813018277287483\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch338,loss:0.03807890601456165\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch339,loss:0.03802790166810155\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch340,loss:0.03797714551910758\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch341,loss:0.03792666085064411\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch342,loss:0.03787642065435648\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch343,loss:0.037826443556696177\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch344,loss:0.03777671745046973\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch345,loss:0.037727242801338434\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch346,loss:0.03767801774665713\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch347,loss:0.03762903297320008\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch348,loss:0.03758029779419303\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch349,loss:0.03753180196508765\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch350,loss:0.03748355619609356\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch351,loss:0.037435546051710844\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch352,loss:0.03738777292892337\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch353,loss:0.03734023543074727\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch354,loss:0.03729293355718255\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch355,loss:0.03724586172029376\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch356,loss:0.03719902690500021\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch357,loss:0.037152417469769716\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch358,loss:0.037106027361005545\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch359,loss:0.037059868685901165\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch360,loss:0.03701393399387598\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch361,loss:0.03696822887286544\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch362,loss:0.03692273190245032\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch363,loss:0.03687747148796916\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch364,loss:0.036832407116889954\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch365,loss:0.03678757604211569\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch366,loss:0.036742948461323977\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch367,loss:0.036698535084724426\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch368,loss:0.036654336377978325\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch369,loss:0.03661034628748894\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch370,loss:0.03656656062230468\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch371,loss:0.03652298403903842\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch372,loss:0.03647961234673858\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch373,loss:0.036436444614082575\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch374,loss:0.03639347990974784\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch375,loss:0.03635071497410536\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch376,loss:0.03630815492942929\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch377,loss:0.03626578440889716\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch378,loss:0.036223613657057285\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch379,loss:0.036181637551635504\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch380,loss:0.036139854695647955\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch381,loss:0.03609825950115919\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch382,loss:0.03605686640366912\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch383,loss:0.03601565817371011\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch384,loss:0.035974635276943445\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch385,loss:0.035933798644691706\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch386,loss:0.0358931478112936\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch387,loss:0.035852687899023294\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch388,loss:0.03581240214407444\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch389,loss:0.03577230591326952\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch390,loss:0.0357323857024312\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch391,loss:0.03569263685494661\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch392,loss:0.03565308451652527\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch393,loss:0.035613701678812504\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch394,loss:0.03557449346408248\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch395,loss:0.03553545940667391\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch396,loss:0.03549659391865134\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch397,loss:0.03545790445059538\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch398,loss:0.035419382620602846\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch399,loss:0.0353810372762382\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch400,loss:0.03534285817295313\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch401,loss:0.035304846707731485\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch402,loss:0.03526700148358941\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch403,loss:0.035229314118623734\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch404,loss:0.03519180091097951\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch405,loss:0.03515444463118911\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch406,loss:0.035117261577397585\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch407,loss:0.03508022986352444\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch408,loss:0.03504335135221481\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch409,loss:0.03500664420425892\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch410,loss:0.034970087464898825\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch411,loss:0.03493368485942483\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch412,loss:0.03489744896069169\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch413,loss:0.03486135974526405\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch414,loss:0.03482542559504509\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch415,loss:0.03478964325040579\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch416,loss:0.034754009917378426\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch417,loss:0.034718535374850035\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch418,loss:0.034683205652982\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch419,loss:0.03464802261441946\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch420,loss:0.034612988121807575\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch421,loss:0.03457810590043664\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch422,loss:0.03454336104914546\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch423,loss:0.03450876474380493\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch424,loss:0.03447431791573763\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch425,loss:0.03444000566378236\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch426,loss:0.03440583497285843\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch427,loss:0.03437181003391743\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch428,loss:0.03433792293071747\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch429,loss:0.034304179251194\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch430,loss:0.034270568285137415\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch431,loss:0.03423710120841861\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch432,loss:0.03420375566929579\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch433,loss:0.03417056705802679\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch434,loss:0.034137504640966654\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch435,loss:0.03410457447171211\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch436,loss:0.034071775153279305\n",
      "Test_acc: 1.0\n",
      "############################################\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch437,loss:0.0340391262434423\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch438,loss:0.034006587229669094\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch439,loss:0.03397418977692723\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch440,loss:0.03394191525876522\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch441,loss:0.03390977391973138\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch442,loss:0.03387776389718056\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch443,loss:0.03384588425979018\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch444,loss:0.03381411451846361\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch445,loss:0.03378248680382967\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch446,loss:0.03375098016113043\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch447,loss:0.03371959878131747\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch448,loss:0.033688342198729515\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch449,loss:0.03365720482543111\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch450,loss:0.03362618573009968\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch451,loss:0.03359529562294483\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch452,loss:0.03356453496962786\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch453,loss:0.03353386931121349\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch454,loss:0.033503344282507896\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch455,loss:0.033472930546849966\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch456,loss:0.03344262903556228\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch457,loss:0.033412464428693056\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch458,loss:0.03338239947333932\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch459,loss:0.03335245465859771\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch460,loss:0.03332262299954891\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch461,loss:0.033292912412434816\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch462,loss:0.033263306599110365\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch463,loss:0.03323381068184972\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch464,loss:0.03320444328710437\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch465,loss:0.03317517042160034\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch466,loss:0.03314602002501488\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch467,loss:0.033116981852799654\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch468,loss:0.03308804053813219\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch469,loss:0.03305921936407685\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch470,loss:0.03303051320835948\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch471,loss:0.03300189692527056\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch472,loss:0.03297340404242277\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch473,loss:0.03294501034542918\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch474,loss:0.03291672049090266\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch475,loss:0.032888537272810936\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch476,loss:0.03286045417189598\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch477,loss:0.03283248795196414\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch478,loss:0.032804610673338175\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch479,loss:0.03277683770284057\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch480,loss:0.03274918533861637\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch481,loss:0.032721617724746466\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch482,loss:0.03269415581598878\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch483,loss:0.032666802406311035\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch484,loss:0.03263953747227788\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch485,loss:0.03261237405240536\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch486,loss:0.032585311215370893\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch487,loss:0.032558354549109936\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch488,loss:0.03253148403018713\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch489,loss:0.03250471269711852\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch490,loss:0.032478044275194407\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch491,loss:0.03245146572589874\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch492,loss:0.03242499195039272\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch493,loss:0.03239860525354743\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch494,loss:0.03237231262028217\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch495,loss:0.03234612103551626\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch496,loss:0.032320013269782066\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch497,loss:0.032294007018208504\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch498,loss:0.03226808691397309\n",
      "Test_acc: 1.0\n",
      "############################################\n",
      "Epoch499,loss:0.03224226273596287\n",
      "Test_acc: 1.0\n",
      "############################################\n"
     ]
    }
   ],
   "source": [
    "for epoch in range(epoch):\n",
    "    for step,(x_train,y_train) in enumerate(train_db):\n",
    "        with tf.GradientTape() as tape:\n",
    "            y = tf.matmul(x_train,w1) + b1\n",
    "            y = tf.nn.softmax(y)\n",
    "            y_ = tf.one_hot(y_train,depth=3)\n",
    "            loss = tf.reduce_mean(tf.square(y_-y))  #损失函数用均方误差\n",
    "            loss_all +=loss.numpy() \n",
    "        #计算loss对各个参数的梯度\n",
    "        grads = tape.gradient(loss,[w1,b1])\n",
    "        \n",
    "        #实现梯度更新w1 = w1 -lr*w1_grad  b = b - lr*b_grad\n",
    "        w1.assign_sub(lr*grads[0])\n",
    "        b1.assign_sub(lr*grads[1])\n",
    "        \n",
    "    #每个epoch打印loss\n",
    "    print(\"Epoch{},loss:{}\".format(epoch,loss_all/4))\n",
    "    train_loss_results.append(loss_all/4)   #将4个step的loss求平均记录着此变量中\n",
    "    loss_all = 0  #归零，为下一个epoch的loss做准备\n",
    "\n",
    "# 4测试效果\n",
    "# 计算当前参数前向传播后的准确率，显示当前acc\n",
    "    total_correct,total_number = 0,0\n",
    "    for x_test,y_test in test_db:\n",
    "        y = tf.matmul(x_test,w1) + b1\n",
    "        y = tf.nn.softmax(y)\n",
    "        pred = tf.argmax(y,axis=1)  #返回y中最大值的索引，即预测的分类\n",
    "        #将pred转换为y_test的数据类型\n",
    "        pred = tf.cast(pred,dtype=y_test.dtype)\n",
    "        #若分类正确，则correct=1,否则为0，将bool型的结果转化为int型\n",
    "        correct = tf.cast(tf.equal(pred,y_test),dtype=tf.int32)\n",
    "        #将每个batch中的correct数加起来\n",
    "        correct = tf.reduce_sum(correct)\n",
    "        total_correct += int(correct)\n",
    "        total_number +=x_test.shape[0]\n",
    "    acc = total_correct / total_number\n",
    "    test_acc.append(acc)\n",
    "    print(\"Test_acc:\",acc)\n",
    "    print(\"############################################\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5acc/loss可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEWCAYAAABrDZDcAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAeiElEQVR4nO3de5hdVZ3m8e9bl1TlUkkwKSAmQECjdgIimkFs0GZsehpouqFHR7EdL4xOHhCn5REd8TJe+rHnEae9IbYIkgYE0ZlWEZxoy3hnBpWQDiQEaCKGTkkwlXBJQm51+c0fe52qU+echKqkdk6q1vt5nvOcvdfe5+y16knOe9Ze++yliMDMzPLV0uwKmJlZczkIzMwy5yAwM8ucg8DMLHMOAjOzzDkIzMwy5yAwK4mkHZJOaHY9zJ6Lg8BKJWmDpLOacNwbJO1NH8aVxxtLPN5PJb2zuiwiZkTEoyUd768krUzt2iTp+5LOKONYNvk5CGwy+3T6MK48vtnsCo0HSe8FPg/8d+Ao4Fjg74HzD+C92sa3djYROQisKSR1SPq8pMfT4/OSOtK2uZK+J+lpSU9K+oWklrTtA5J+J2m7pIcl/fEYj3uDpE9WrZ8pqadqfYOk90m6X9Izkr4pqbNq+/mSVkvaJuk3ks6W9LfAq4Gr0zf0q9O+IemFaXmWpJsk9Up6TNJHqtr0dkl3Sfo7SU9J+q2kc/ZR/1nA3wCXRsS3I+LZiOiLiDsi4v1jaOMHJN0PPJvq8o81x/mCpKuq6n596nn8TtInJbWO5e9uhzd/G7Bm+TBwGvAyIIDvAh8B/htwOdADdKd9TwNC0ouBdwP/JiIel7QQKOMD6Q3A2cBu4P8CbweukXQqcBPweuBHwDygKyJ+IOl04OaI+Oo+3vOLwCzgBGAO8ENgE3B92v5K4EZgLrAMuF7S/Ki/B8yrgE7gOwfZxjcBfwZsAY4EPiRpZkRsSx/ybwD+Mu17I/B74IXAdOB7wEbgKwdZBztMuEdgzfJm4G8iYnNE9AKfAN6StvVRfMgel77t/iJ9IA4AHcBiSe0RsSEifrOfY7wv9SqelrRlDHW7KiIej4gngTsowgrgHcDyiLgzIgYj4ncR8dBzvVn6YH0j8MGI2B4RG4DPVLUX4LGIuC4iBig+eOdRnPapNQfYEhH9Y2hPI1dFxMaI2BURjwGrgAvSttcCOyPil5KOAs4BLku9j83A54ALD/L4dhhxEFizPB94rGr9sVQG8D+A9cAPJT0q6QqAiFgPXAZ8HNgs6RuSns++/V1EzE6PuWOo2xNVyzuBGWn5GGB/wbMvc4Ep1Ld3fqNjRsTOtDiDeluBueNwbn9jzfrXKXoJAH+V1gGOA9qBTZVQpegJHHmQx7fDiIPAmuVxig+ZimNTGelb8+URcQLw58B7K2MBEfH1iDgjvTaAK8d43GeBaVXrR4/htRuBF+xj2/5u47uFopdT297fjeHYFXdTnLK6YD/7jKaNtfX9X8CZkhZQnBKqBMFGYA8wtypUZ0bEkgOoux2mHAR2KLRL6qx6tAG3Ah+R1C1pLvBR4GYASedJeqEkAdsoTgkNSHqxpNemQeXdwK60bSxWA+dKep6koyl6GKN1PXCRpD+W1CJpvqSXpG2/pzj/Xyed7vmfwN9K6pJ0HPDeSnvHIiKeofhbfUnSBZKmSWqXdI6kTx9oG9PpuZ8C/wD8NiIeTOWbKMYzPiNpZmr3CyT90VjrbocvB4EdCisoPrQrj48DnwRWAvcDayjOUVeudFkE/B9gB8U34L+PiJ9SjA98iuIb9hOkQc4x1uVrwH3ABooPuFFfUhoRvwYuojhH/gzwM4a/5X8BeH266ueqBi//LxTf1B8F7qL4xr18jHWv1OOzFEHyEaCX4lv7u4Hb0i4H2savA2cx3BuoeCvFqa11wFPAP1KMYdgkIU9MY2aWN/cIzMwy5yAwM8ucg8DMLHMOAjOzzE24W0zMnTs3Fi5c2OxqmJlNKPfee++WiOhutG3CBcHChQtZuXJls6thZjahSHpsX9t8asjMLHOlBYGkYyT9RNKDkh6Q9J4G+5yZbvW7Oj0+WlZ9zMyssTJPDfUDl0fEKkldwL2S7oyIdTX7/SIiziuxHmZmth+lBUG6R8mmtLxd0oMUd1usDQIzs1L19fXR09PD7t27m12V0nV2drJgwQLa29tH/ZpDMlicJhA5BfhVg82vknQfxZ0n3xcRDzR4/TKKyTo49thjy6uomU1KPT09dHV1sXDhQop7GU5OEcHWrVvp6enh+OOPH/XrSh8sljQD+BbFxBbbajavoph85GSKGZxuq309QERcGxFLI2Jpd3fDq5/MzPZp9+7dzJkzZ1KHAIAk5syZM+aeT6lBIKmdIgRuiYhv126PiG0RsSMtr6C4XfFYJhAxMxuVyR4CFQfSzjKvGhLF/dsfTLfNbbTP0Wk/0nywLRQzMI27h5/Yzmd/+DBbduwp4+3NzCasMscITqeYk3WNpNWp7EMUMzMREddQTAJ+iaR+ivvUX9hgsu5x8cjm7Vz14/Wcd/LzmTujo4xDmJlNSGVeNXQXsN8+SkRcDVxdVh2qKVXF0y+YmY2UzS+LMzk9aGaHsa985Stceumlza5GnWyCoCL2O8e4mVl57r//fk466aRmV6NONkFQ6RD41JCZNcuaNWvqguChhx7iNa95DUuWLOGss85iy5YtANx444284hWv4KUvfSmvfvWr91k2Hibc3UcPVOXUkIPALG+fuOMB1j1e+5Omg7P4+TP52J8vec791q5dy4knnji0vmfPHl73utdx8803c8opp3DllVfyuc99jiuuuIIrr7yS1atXM2XKFJ5++mm2b99eVzZesukRVPoEPjVkZs2wceNGurq6mDVr1lDZbbfdxhlnnMEpp5wCwOLFi9m8eTOtra3s2rWLyy+/nJUrVzJ79uyGZePFPQIzy8povrmXodH4wLp160aUrVmzhsWLFzNt2jTWrl3LHXfcwbJly3jnO9/Ju971roZl4yGfIGh2Bcwsa43GB+bPn8/q1cXPrB599FG+9rWvcdddd/HII4+waNEiLrzwQtatW8fu3bsblo2XfILA14+aWROtWbOGH/zgB9x6660AzJs3jx//+MesWLGCk046ialTp7J8+XLmzJnD5Zdfzt1338306dNZsmQJ1113HRdffHFd2XjJJggqfGrIzJrhlltuaVh+223199q84YYbRlU2XrIZLB66fNSDxWZmI+QTBB4sNjNrKL8gaG41zKxJSrqf5WHnQNqZTxAM3XQuj38MZjass7OTrVu3Tvr//5UZyjo7O8f0unwGi33RkFm2FixYQE9PD729vc2uSukqcxaPRT5BkEzu7wNm1kh7e/uY5vDNTUanhgqTvGdoZjZm+QSBhi8gNTOzYfkEQXp2j8DMbKR8gsCXj5qZNZRPEHjOYjOzhvIJAl8+ambWUDZBUDHZf1BiZjZW2QSBrxkyM2ssmyDAN50zM2somyCQ5yw2M2sonyDwuSEzs4byCYJmV8DM7DCVTRBUuENgZjZSNkFQudeQB4vNzEbKKAiKZw8Wm5mNlE8QpGf3CMzMRsonCHzTOTOzhkoLAknHSPqJpAclPSDpPQ32kaSrJK2XdL+kl5dVHzxnsZlZQ2VOVdkPXB4RqyR1AfdKujMi1lXtcw6wKD1eCXw5PY8733TOzKyx0noEEbEpIlal5e3Ag8D8mt3OB26Kwi+B2ZLmlVUn8KkhM7Nah2SMQNJC4BTgVzWb5gMbq9Z7qA8LJC2TtFLSyt7e3gOrQ2XBSWBmNkLpQSBpBvAt4LKI2Fa7ucFL6j6qI+LaiFgaEUu7u7sPtB7pzZ0EZmbVSg0CSe0UIXBLRHy7wS49wDFV6wuAx0upS3r2WLGZ2UhlXjUk4HrgwYj47D52ux14a7p66DTgmYjYVE59imcHgZnZSGVeNXQ68BZgjaTVqexDwLEAEXENsAI4F1gP7AQuKqsy8m3nzMwaKi0IIuIunuOmn1Fc1H9pWXVoeMxDeTAzswkgv18W+9yQmdkI2QRBhWPAzGykbILAg8VmZo3lEwR4rkozs0byCQL3CMzMGsouCMzMbKRsgqDCHQIzs5GyCQLhOYvNzBrJJwg8Z7GZWUP5BEF6do/AzGykfILAcxabmTWUTRA8x22PzMyylVEQFHyvITOzkbIJAv+OwMyssXyCID27Q2BmNlI+QeA5i83MGsonCNKzewRmZiPlEwS+6ZyZWUPZBIGZmTWWTRAM3WuoyfUwMzvc5BMEnrPYzKyhbIKgwjFgZjZSNkEgz1RpZtZQRkHg3xGYmTWSTxA0uwJmZoepbIKgwmPFZmYjZRMEno/AzKyxfILAcxabmTWUTxB4zmIzs4byCYL07B6BmdlI2QQBHiMwM2sonyAwM7OGSgsCScslbZa0dh/bz5T0jKTV6fHRsuoCw4PFPjdkZjZSW4nvfQNwNXDTfvb5RUScV2IdhvjyUTOzxkrrEUTEz4Eny3r/sfJgsZlZY80eI3iVpPskfV/Skn3tJGmZpJWSVvb29h7QgYbuNeQkMDMboZlBsAo4LiJOBr4I3LavHSPi2ohYGhFLu7u7D+hgvvmomVljTQuCiNgWETvS8gqgXdLcso7nOYvNzBprWhBIOlrpfI2kU1NdtjarPmZmuSrtqiFJtwJnAnMl9QAfA9oBIuIa4PXAJZL6gV3AhVHiCXzPWWxm1lhpQRARb3qO7VdTXF56aHjOYjOzhpp91dAhI89MY2bWUD5BkJ7dITAzGymfIPCcxWZmDWUTBGZm1lg2QeBTQ2ZmjeUTBL7pnJlZQ/kEgecsNjNraFRBIGm6pJa0/CJJfyGpvdyqjS/PWWxm1thoewQ/BzolzQd+BFxEMd/AhOMegZnZSKMNAkXETuDfA1+MiL8EFpdXrfHnH5SZmTU26iCQ9CrgzcD/TmVlzm5mZmaHyGiD4DLgg8B3IuIBSScAPymvWuNveLDY54bMzKqN6lt9RPwM+BlAGjTeEhF/XWbFxpvnIzAza2y0Vw19XdJMSdOBdcDDkt5fbtXGl2coMzNrbLSnhhZHxDbgAmAFcCzwltJqVYLhOYubXBEzs8PMaIOgPf1u4ALguxHRxwT7cj3cI5hQ1TYzK91og+ArwAZgOvBzSccB28qqlJmZHTqjHSy+CriqqugxSf+2nCqVw4PFZmaNjXaweJakz0pamR6foegdTBjD8xGYmVm10Z4aWg5sB96QHtuAfyirUqVyl8DMbITR/jr4BRHxuqr1T0haXUaFyiS5R2BmVmu0PYJdks6orEg6HdhVTpXKI9whMDOrNdoewcXATZJmpfWngLeVU6XySPLlo2ZmNUZ71dB9wMmSZqb1bZIuA+4vs3JmZla+Mc1QFhHb0i+MAd5bQn1K5VNDZmb1Dmaqygl3h38PFpuZ1TuYIJhwn6lC7hGYmdXY7xiBpO00/sAXMLWUGpVJvteQmVmt/QZBRHQdqoocCoIJ2I8xMyvXwZwaMjOzSSCrIPBgsZlZvbyCAHnOYjOzGqUFgaTlkjZLWruP7ZJ0laT1ku6X9PKy6jJ8TP+OwMysVpk9ghuAs/ez/RxgUXosA75cYl2A9IOysg9iZjbBlBYEEfFz4Mn97HI+cFMUfgnMljSvrPpAuteQk8DMbIRmjhHMBzZWrfeksjqSllUmxent7T3gAxY9AieBmVm1ZgZBo1tUNPyUjohrI2JpRCzt7u4uuVpmZnlpZhD0AMdUrS8AHi/1iB4sNjOr08wguB14a7p66DTgmYjYVOYBJ9xd8szMDoHRTkwzZpJuBc4E5krqAT4GtANExDXACuBcYD2wE7iorLpU1cm/IzAzq1FaEETEm55jewCXlnX8RvzLYjOzepn9sthjBGZmtbIKAjMzq5dVEHjyejOzenkFAT41ZGZWK68g8GCxmVmdrIIAz1lsZlYnqyCQ56o0M6uTVxDgMQIzs1pZBYGZmdXLKgg8Q5mZWb28ggD/jsDMrFZeQeAegZlZnbyCAF8zZGZWK68g8JzFZmZ1sgoCMzOrl10QeLDYzGykrIJAHiQwM6uTXRA4B8zMRsorCPCcxWZmtfIKAvcIzMzq5BUE+AdlZma1sgoCMzOrl1UQFHMWm5lZtbyCADxYbGZWI6sgwIPFZmZ1sgoCz1RpZlYvryCQ5yMwM6uVVRCYmVm9rILAvyMwM6uXVxB4hjIzszp5BYHnLDYzq5NXELhHYGZWp9QgkHS2pIclrZd0RYPtZ0p6RtLq9PhomfUBXz1qZlarraw3ltQKfAn4E6AHuEfS7RGxrmbXX0TEeWXVo6ZO7hGYmdUos0dwKrA+Ih6NiL3AN4DzSzyemZkdgDKDYD6wsWq9J5XVepWk+yR9X9KSRm8kaZmklZJW9vb2HnCFBPjkkJnZSGUGgRqU1X4KrwKOi4iTgS8CtzV6o4i4NiKWRsTS7u7uA6+QB4vNzOqUGQQ9wDFV6wuAx6t3iIhtEbEjLa8A2iXNLatCnqHMzKxemUFwD7BI0vGSpgAXArdX7yDpaElKy6em+mwtq0Kes9jMrF5pVw1FRL+kdwP/BLQCyyPiAUkXp+3XAK8HLpHUD+wCLowSP6ndIzAzq1daEMDQ6Z4VNWXXVC1fDVxdZh3MzGz/8vplMR4sNjOrlVUQ4DmLzczqZBUEnrPYzKxeXkHQ6JcNZmaZyysI8BiBmVmtrIIA8HwEZmY1sgoC+dyQmVmdvIIAnxoyM6uVVxD4pnNmZnXyCgLPWWxmVierIMA9AjOzOlkFgfBN58zMamUVBGZmVi+rIJC7BGZmdfIKAg8Wm5nVySsIPFhsZlYnvyBodiXMzA4zeQWB5yw2M6uTVRCAewRmZrWyCoJj50xjTc8z3PvYk82uipnZYSOrIPjA2S/h+bOncsnNq9iw5dlmV8fM7LCQVRDMmtrOdW9dSv9g8MZr72bVvz7V7CqZmTVdVkEA8OKju7j1P59GW0sL/+Gau/n47Q/w+227m10tM7Om0US7imbp0qWxcuXKg36fbbv7+NT3H+Kb92wE4MwXdfOnS47mD184hwVHTDvo9zczO5xIujciljbclmsQVDy29Vm+ec9Gvr3qdzyRegbzZ0/lD+bN5A/mdfGSo2dyQvd0jnneNGZ0tI3bcc3MDiUHwShEBI9s3sFdj2zh3n99ioef2M6jvTsYrPrzHDGtnQVHTOOY503lqJmdHNnVyZFdHRw5s4Mjuzrp7urgiGntnhLTzA47+wsCf8VNJPGio7p40VFd/CeOB2B33wDrN+9gw9Zn2fjkLjY+tZONT+7kwU3b+dnDvTy7d6DufdpbxZzpHcye1s4R06ZwxPR2Zk2dwhFpvbp89rQpzJ7azozONjraWg91k83MAAfBfnW2t3Li/FmcOH9Ww+3P7uln8/Y99G7fw+btu9m8bQ+bt+/hyWf38NTOPp7euZd/+f0Ont65l6d29jEwuO/e15S2FmZ2ttHV2c6Mjja6OiuPYr2yrVI2vaOVaVPamDallalTWpk2pZVp7W1MndLKlLbsrgEws4PgIDgI0zvaOL6jjePnTn/OfSOCbbv7h0LhqZ17eXrnXp7Z2ceOPf1s393Ptt39abmP7bv72bpl59Dyjr39o75hXnurmNpeHxRTp7Qxrb2VaR3FekdbKx1tLXS2F88dbS10DC1XbWtvGVHW0d5CZ1ulvJXWFp8KM5vIHASHiCRmTW1n1tR2jpsz9tcPDgbP7i0CoxIcu/YOsHNvP7v6Bti5t3js2tvPs3sHhrbtHFoe4Jmde9lU2a9vgD19A+zpH6R/Pz2V0WhrER1tLbS3tdDe2sKU1hbaWkV7a2W9WK6UTUnlba0aWm5vE20tLUxpa6G96rW1y20txetaW0Rbi2iR0noLbS3D5cVzS/HcWl/e0sLw9prXeYzHcuMgmCBaWpRODbWP+3v3Dwyyd2CQPX2D7O4fYE/fIHv6B9nTXwRFsT7A7r7qsvTcP7ytb2CQvoFIzw3W+4Ptff30DxbLfem4/QPDy31p/WDD6WC01gXKyKCRin1aJFoELRoOkNYWaFVleXh7ZZ+WVDa8T9qe3q9VVC2LlpaRr1d6bfXxKttbKutVr1c6vobqAaRnMVw/KvvB0DGhwWvTa1R5j6Hl9Nq0v0a8X/E8/Jrh49fWr3gu9lHN8YGhv1+l7mi4/ZX9qXkPVR2LmvWRdc73C0CpQSDpbOALQCvw1Yj4VM12pe3nAjuBt0fEqjLrZPXaWltoa21h2pRm12TY4GDQN1gESf9QSAQDA0H/4CADg0VYDD8PMjDIyG0D1fs0eM1A0RsajEb7F+9Zvd4/MMhgFHUbjGAgYDCCwbTPYGU9ivUIUnlx/D39tfsUpwwr+wxW7T+Y3m8gYmifofeMyj6keoTn2RhHlYCoDRKGykcGSWU/qtcbvAeNwofhAKoE6P7e+02nHss7X33CuLe5tCCQ1Ap8CfgToAe4R9LtEbGuardzgEXp8Urgy+nZMtfSIjpaWvFPN0YnaoOkap0UPsFwCBVlEMRQuJG2x1BYAWl7VAVYpPWh1w6VpWMMDh8rql47XFY5xnC9I0a+Zui1FIFX2UZV3SrHJ0bWYzBGtiXtQjAcmFG1rXo/Uj2q969eZ2j9Od57H+8B9X+Thu89VD68TkB3V0cp/37K/G92KrA+Ih4FkPQN4HygOgjOB26K4scMv5Q0W9K8iNhUYr3MJh2l00oeuLcDUeZ1hvOBjVXrPalsrPuYmVmJygyCRl9Nas9kjmYfJC2TtFLSyt7e3nGpnJmZFcoMgh7gmKr1BcDjB7APEXFtRCyNiKXd3d3jXlEzs5yVGQT3AIskHS9pCnAhcHvNPrcDb1XhNOAZjw+YmR1apQ0WR0S/pHcD/0Rx+ejyiHhA0sVp+zXACopLR9dTXD56UVn1MTOzxkq9OC8iVlB82FeXXVO1HMClZdbBzMz2z3cnMzPLnIPAzCxzE25iGkm9wGMH+PK5wJZxrM5E4DbnwW3Ow8G0+biIaHjZ5YQLgoMhaeW+ZuiZrNzmPLjNeSirzT41ZGaWOQeBmVnmcguCa5tdgSZwm/PgNuehlDZnNUZgZmb1cusRmJlZDQeBmVnmsgkCSWdLeljSeklXNLs+40XSckmbJa2tKnuepDslPZKej6ja9sH0N3hY0p82p9YHR9Ixkn4i6UFJD0h6TyqftO2W1Cnp15LuS23+RCqftG2GYqZDSf8s6XtpfVK3F0DSBklrJK2WtDKVldvuGJo6bvI+KG569xvgBGAKcB+wuNn1Gqe2vQZ4ObC2quzTwBVp+QrgyrS8OLW9Azg+/U1am92GA2jzPODlabkL+JfUtknbboq5O2ak5XbgV8Bpk7nNqR3vBb4OfC+tT+r2prZsAObWlJXa7lx6BEPTZkbEXqAybeaEFxE/B56sKT4fuDEt3whcUFX+jYjYExG/pbjr66mHpKLjKCI2RcSqtLwdeJBiZrtJ2+4o7Eir7ekRTOI2S1oA/Bnw1ariSdve51Bqu3MJgtymxDwq0rwO6fnIVD7p/g6SFgKnUHxDntTtTqdJVgObgTsjYrK3+fPAfwUGq8omc3srAvihpHslLUtlpba71NtQH0ZGNSVmBibV30HSDOBbwGURsU3a58Ttk6LdETEAvEzSbOA7kk7cz+4Tus2SzgM2R8S9ks4czUsalE2Y9tY4PSIel3QkcKekh/az77i0O5cewaimxJxEfi9pHkB63pzKJ83fQVI7RQjcEhHfTsWTvt0AEfE08FPgbCZvm08H/kLSBopTua+VdDOTt71DIuLx9LwZ+A7FqZ5S251LEIxm2szJ5HbgbWn5bcB3q8ovlNQh6XhgEfDrJtTvoKj46n898GBEfLZq06Rtt6Tu1BNA0lTgLOAhJmmbI+KDEbEgIhZS/H/9cUT8RyZpeyskTZfUVVkG/h2wlrLb3ewR8kM4En8uxdUlvwE+3Oz6jGO7bgU2AX0U3w7eAcwBfgQ8kp6fV7X/h9Pf4GHgnGbX/wDbfAZF9/d+YHV6nDuZ2w28FPjn1Oa1wEdT+aRtc1U7zmT4qqFJ3V6KKxvvS48HKp9VZbfbt5gwM8tcLqeGzMxsHxwEZmaZcxCYmWXOQWBmljkHgZlZ5hwEZjUkDaQ7P1Ye43a3WkkLq+8Ua3Y4yOUWE2ZjsSsiXtbsSpgdKu4RmI1Suk/8lWlegF9LemEqP07SjyTdn56PTeVHSfpOmkPgPkl/mN6qVdJ1aV6BH6ZfCps1jYPArN7UmlNDb6zati0iTgWuprg7Jmn5poh4KXALcFUqvwr4WUScTDFnxAOpfBHwpYhYAjwNvK7k9pjtl39ZbFZD0o6ImNGgfAPw2oh4NN307omImCNpCzAvIvpS+aaImCupF1gQEXuq3mMhxS2kF6X1DwDtEfHJ8ltm1ph7BGZjE/tY3tc+jeypWh7AY3XWZA4Cs7F5Y9Xz3Wn5/1HcIRPgzcBdaflHwCUwNKnMzENVSbOx8DcRs3pT00xgFT+IiMolpB2SfkXxJepNqeyvgeWS3g/0Ahel8vcA10p6B8U3/0so7hRrdljxGIHZKKUxgqURsaXZdTEbTz41ZGaWOfcIzMwy5x6BmVnmHARmZplzEJiZZc5BYGaWOQeBmVnm/j9WZhxxe5ksNwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.title('Loss Function Curve')\n",
    "plt.xlabel('Epoch')\n",
    "plt.ylabel('Loss')\n",
    "plt.plot(train_loss_results,label=\"$Loss$\")\n",
    "plt.legend()\n",
    "plt.show()\n",
    "\n",
    "plt.title('Acc Curve')\n",
    "plt.xlabel('Epoch')\n",
    "plt.ylabel('Acc')\n",
    "plt.plot(test_acc,label=\"$Accuracy$\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
